#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const static int maxn=600000;
const static int kind=26;
const static char bs='a';
int len,top,num;
static int ch[maxn][kind];
char cnt[maxn];
inline int get_v(){
	fill(ch[len],ch[len]+kind,-1);
	cnt[len++]=0;
	return len-1;
    }
void insert(int root,char *b){
	int p=root;
	for(char i=0;b[i];i++){
		if(ch[p][b[i]-bs]==-1)ch[p][b[i]-bs]=get_v();
		p=ch[p][b[i]-bs];
		}
	cnt[p]++;
    }
void output(int root,char *b){
	if(root==-1)return ; 
	if(cnt[root]){
	   num+=cnt[root];			  
	   b[top]=0;
	   for(int i=0;i<cnt[root];i++)puts(b);	   			  			  
       } 
    for(char i=0;i<kind;i++)if(ch[root][i]!=-1){
		b[top++]=i+bs;
		output(ch[root][i],b);
		top--;	
	    }   
    }	
char str[10000];//or std::string
int main(){
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	
	double t1=clock();
	len=0;
	scanf("%s",str);
	int n=atoi(str);
	int root=get_v();
	for(int i=0;i<n;i++){
		scanf("%s",str);
		insert(root,str);
	    }
    //cout<<"len="<<len<<endl;
    double t2=clock();
  	top=num=0;
    output(root,str);
	double t3=clock();
	//printf("total cost time=%.2lfms\n",(t3-t1)/1000);
    

	return 0;
    }
